# 作业：
# 1、做一个学生点名系统，系统里支持：存入学生、更改学生、删除学生、点到学生姓名方法
import pymysql
class DB():
    def __init__(self,host,user,password,database,cursorclass = None):
        self.host = host
        self.user = user
        self.password = password
        self.databases = database
        self.cursorclass = cursorclass
    def connect(self):
        self.db = pymysql.connect(host = self.host,user = self.user,
                                  password = self.password,database = self.databases,cursorclass=self.cursorclass)
        self.cursor = self.db.cursor()
    def close(self):
        self.cursor.close()
        self.db.close()
    def select_one(self, sql):  # select * from student where id = 3;   10
        self.connect()  # 第一步，调用连接数据库方法，连接数据库
        try:  # 尝试去执行sql
             self.cursor.execute(sql)  # 使用游标对象，执行sql语句
             result = self.cursor.fetchone()  # 返回一条数据 fetchone()
             self.close()  # 最后关闭掉数据库，不要忘记
        except Exception as e:  # 如果sql执行错误
             print("select error %s" % e)
             result = None
        return result
    def Select_all(self,sql):
        self.connect()
        try:
            self.cursor.execute(sql)
            result=self.cursor.fetchall()
            self.close()
        except Exception as e:
            print("select error %s" % e)
            result = None
        return result
    def __edit(self,sql):
        self.connect()
        try:
            self.cursor.execute(sql)
            self.db.commit()
            result = "数据库更新成功"
        except Exception:
            result = "数据库更新失败"
    def insert(self, sql):
        return self.__edit(sql)
    def delete(self, sql):
        return self.__edit(sql)
    def update(self, sql):
        return self.__edit(sql)
db1=DB(host="124.70.91.232",user="root",password="12345678",database="student",
       cursorclass = pymysql.cursors.DictCursor)

# db1.insert("insert into inform values('刘门马',90,'辽宁沈阳','18012345678');")
# db1.insert("insert into inform values('四季阳',23,'辽宁沈阳','13050605040');")
# print("存入成功：",db1.Select_all('select * from inform;'))
# 存入学生（姓名、年龄、家庭地址、手机号）： 存入成功后，提示xxx存入成功
# db1.update("update inform set age=20 where stu_name='刘门马'")
# print("更改成功：",db1.select_one('select * from inform;'))
# 更改学生（姓名、年龄、家庭地址、手机号）：可以修改学生内容的任意一个字段
# 删除学生：删除的学生将不在展示
# db1.delete("delete from inform where stu_name='刘门马'")
# print("删除成功：",db1.Select_all('select * from inform;'))
# 展示全部学生：可以看到全部的学生姓名
# print(db1.Select_all('select stu_name from inform;'))
# 点到学生姓名：随机抽取任意一个存在的学生信息，然后打印：到！。举例： 刘闯到！
# Choice="SELECT stu_name FROM inform ORDER BY RAND() LIMIT 1"
# result=db1.select_one(Choice)
# if result:
#     name=result["stu_name"]
#     print(f"{name}" + "，到！")
# else:
#     print("学生信息不存在")
# 以上内容，需要连接数据库，每次的数据都需要增、删、改、查去做
#
# student表：name、age、address、phone_number
#
# 2、点餐管理系统
# 1》、餐馆可以新增菜品、下架菜品、修改菜品

# 2》、每个菜品，都有对应的库存，所有菜品的库存均为999，每出一道菜，库存-1
# 菜品有对应的价格，餐厅老板定义价格每道菜不允许超过15元，没有小数单位，均为整数
# 3》、餐馆后台有点赞系统，能够收集客户对菜品的喜好，0~5分
# 4》、有菜品评分提报功能，对平均分数（菜品总分/打分人数）低于3分的菜品进行强制下架；
